package client.model;

import java.util.Stack;

public interface Model {
	//Game moves
	void moveUp();
	void moveDown();
	void moveLeft();
	void moveRight();
	void moveUpRight();
	void moveDownRight();
	void moveUpLeft();
	void moveDownLeft();
	
	
	//Gets the game current board
	int[][] getBoard();
	
	//Gets the game current score
	int getScore();
	void updateScore(int sum);
	
	//Gets the game's current state - end game, or otherwise
	int getGameState();
	
	//Initializes a new game
	void initGame();
	
	//Undoes the current move
	void undoMove();
	
	//Gets the whole game's score, for saving the game
	Stack<Integer> getUndoScoresStack();
	
	//Gets the whole game's moves, for saving the game
	Stack<int[][]> getUndoMovesStack();
	
	//Activates the game's custom mode
	void userOption();
	
	//Gets the name of the game
	String getGameName();
}